/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bpmlab.shift.dao;

import bpmlab.shift.dao.service.GenericDAO;
import bpmlab.shift.dao.service.ProcessoDAO;
import bpmlab.shift.entity.Processo;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author Mikael Lima
 */
public class ProcessoDAOJpa implements ProcessoDAO {

    private final GenericDAO<Processo> dao = DAOFactory.criarGenericDAO(Processo.class);

    @Override
    public void salvar(Processo o) throws DAOException {
        dao.salvar(o);
    }

    @Override
    public void excluir(Processo o) throws DAOException {
        dao.excluir(o);
    }

    @Override
    public Processo obter(Object id) {
        return dao.obter(id);
    }

    @Override
    public List<Processo> obterTodos() {
        return dao.obterTodos();
    }
    
    @Override
    public List<Processo> obterPesagens(Date inicio, Date fim) {
        EntityManager em = JpaUtil.getEntityManager();
        String query = "SELECT p FROM Processo p WHERE p.dataDePesagem BETWEEN :inicio and :fim";
        return em.createQuery(query)
                .setParameter("inicio", inicio)
                .setParameter("fim", fim)
                .getResultList();
    }

    @Override
    public List<Processo> obterSecagens(Date inicio, Date fim) {
        EntityManager em = JpaUtil.getEntityManager();
        String query = "SELECT p FROM Processo p WHERE p.secagem.inicioDaSecagem BETWEEN :inicio and :fim";
        return em.createQuery(query)
                .setParameter("inicio", inicio)
                .setParameter("fim", fim)
                .getResultList();
    }
}
